import { message } from 'antd';
import type { ReactNode } from 'react';
import { Navigate, useLocation } from 'react-router-dom';

// 定义鉴权守卫组件的Props类型
interface AuthGuardProps {
  // 需要鉴权保护的子组件
  children: ReactNode;
}

/**
 * 路由鉴权守卫：控制未登录用户的访问权限
 * 已登录（localStorage存在admin_token）则渲染子组件，未登录则重定向到登录页
 */
const AuthGuard = ({ children }: AuthGuardProps) => {
  const location = useLocation();

  // 检测登录状态：从localStorage获取token（实际项目可替换为接口校验/状态管理库）
  const isLoggedIn = () => {
    // const token = localStorage.getItem('admin_token');
    // 简单校验token存在性（实际项目需添加token格式/有效期校验）
    // return !!token;
    return true;
  };

  // 未登录：重定向到登录页，并携带当前路径（登录后返回）
  if (!isLoggedIn()) {
    message.warning('请先登录');
    return <Navigate to="/" state={{ from: location.pathname }} replace />;
  }

  // 已登录：正常渲染子组件
  return <>{children}</>;
};

export default AuthGuard;
